library(tidyverse)
## -- Attaching packages ------------------------------------------------------ tidyverse 1.2.1 --
## v ggplot2 3.2.1 v purrr 0.3.2
## v tibble 2.1.3 v dplyr 0.8.3
## v tidyr 0.8.3 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## -- Conflicts --------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(readxl)
library(gganimate)
library(datapasta)
c2015 <- read_xlsx("c2015.xlsx")
c2015.clean <- c2015 %>%
drop_na() %>%
filter_all(~!(.=='Unknown')) %>%
filter_all(~!(.=='Not Rep')) %>%
filter_all(~!(.==str_detect(.,'Not Rep'))) %>%
filter_all(~!(.==str_detect(.,'Unknown'))) %>%
filter_all(~!(.=='Not Reported')) %>%
filter(SEAT_POS=='Front Seat, Left Side') %>%
mutate(AGE = as.numeric(AGE),
TRAV_SP = ifelse(TRAV_SP == "Stopped", 0, as.numeric(str_remove(TRAV_SP, "MPH"))))
## Warning in ifelse(TRAV_SP == "Stopped", 0, as.numeric(str_remove(TRAV_SP, :
## NAs introduced by coercion
1 & 2. Plotting with moving transitions between months.
c2015.plot <- c2015.clean %>%
group_by(SEX, INJ_SEV, MONTH) %>%
mutate(MEAN_SP = mean(TRAV_SP))
c2015.plot %>%
ggplot(aes(MONTH, MEAN_SP, fill = SEX)) +
geom_col() +
transition_states(MONTH) +
labs(title = 'MONTH = {closest_state}')
c2015.plot %>%
ggplot(aes(DRINKING, fill = SEX)) +
geom_bar() +
transition_states(MONTH) +
labs(title = 'MONTH = {closest_state}') +
geom_text(stat = 'count', aes(label = ..count..))
debt <- tibble::tribble(
~Quarter, ~Mortgage, ~HE.Revolving, ~Auto.Loan, ~Credit.Card, ~Student.Loan, ~Other, ~Total,
"03:Q1", 4.94, 0.24, 0.64, 0.69, 0.24, 0.48, 7.23,
"03:Q2", 5.08, 0.26, 0.62, 0.69, 0.24, 0.49, 7.38,
"03:Q3", 5.18, 0.27, 0.68, 0.69, 0.25, 0.48, 7.56,
"03:Q4", 5.66, 0.3, 0.7, 0.7, 0.25, 0.45, 8.07,
"04:Q1", 5.84, 0.33, 0.72, 0.7, 0.26, 0.45, 8.29,
"04:Q2", 5.97, 0.37, 0.74, 0.7, 0.26, 0.42, 8.46,
"04:Q3", 6.21, 0.43, 0.75, 0.71, 0.33, 0.41, 8.83,
"04:Q4", 6.36, 0.47, 0.73, 0.72, 0.35, 0.42, 9.04,
"05:Q1", 6.51, 0.5, 0.73, 0.71, 0.36, 0.39, 9.21,
"05:Q2", 6.7, 0.53, 0.77, 0.72, 0.37, 0.4, 9.49,
"05:Q3", 6.91, 0.54, 0.83, 0.73, 0.38, 0.41, 9.79,
"05:Q4", 7.1, 0.57, 0.79, 0.74, 0.39, 0.42, 10,
"06:Q1", 7.44, 0.58, 0.79, 0.72, 0.43, 0.42, 10.38,
"06:Q2", 7.76, 0.59, 0.8, 0.74, 0.44, 0.42, 10.75,
"06:Q3", 8.05, 0.6, 0.82, 0.75, 0.45, 0.44, 11.11,
"06:Q4", 8.23, 0.6, 0.82, 0.77, 0.48, 0.41, 11.31,
"07:Q1", 8.42, 0.61, 0.79, 0.76, 0.51, 0.4, 11.5,
"07:Q2", 8.71, 0.62, 0.81, 0.8, 0.51, 0.41, 11.85,
"07:Q3", 8.93, 0.63, 0.82, 0.82, 0.53, 0.41, 12.13,
"07:Q4", 9.1, 0.65, 0.82, 0.84, 0.55, 0.42, 12.37,
"08:Q1", 9.23, 0.66, 0.81, 0.84, 0.58, 0.42, 12.54,
"08:Q2", 9.27, 0.68, 0.81, 0.85, 0.59, 0.4, 12.6,
"08:Q3", 9.29, 0.69, 0.81, 0.86, 0.61, 0.41, 12.68,
"08:Q4", 9.26, 0.71, 0.79, 0.87, 0.64, 0.41, 12.67,
"09:Q1", 9.14, 0.71, 0.77, 0.84, 0.66, 0.41, 12.53,
"09:Q2", 9.06, 0.71, 0.74, 0.82, 0.68, 0.39, 12.41,
"09:Q3", 8.94, 0.71, 0.74, 0.81, 0.69, 0.38, 12.28,
"09:Q4", 8.84, 0.71, 0.72, 0.8, 0.72, 0.38, 12.17,
"10:Q1", 8.83, 0.7, 0.7, 0.76, 0.76, 0.36, 12.12,
"10:Q2", 8.7, 0.68, 0.7, 0.74, 0.76, 0.35, 11.94,
"10:Q3", 8.61, 0.67, 0.71, 0.73, 0.78, 0.34, 11.84,
"10:Q4", 8.45, 0.67, 0.71, 0.73, 0.81, 0.34, 11.71,
"11:Q1", 8.54, 0.64, 0.71, 0.7, 0.84, 0.33, 11.75,
"11:Q2", 8.52, 0.62, 0.71, 0.69, 0.85, 0.33, 11.73,
"11:Q3", 8.4, 0.64, 0.73, 0.69, 0.87, 0.33, 11.66,
"11:Q4", 8.27, 0.63, 0.73, 0.7, 0.87, 0.33, 11.54,
"12:Q1", 8.19, 0.61, 0.74, 0.68, 0.9, 0.32, 11.44,
"12:Q2", 8.15, 0.59, 0.75, 0.67, 0.91, 0.31, 11.38,
"12:Q3", 8.03, 0.57, 0.77, 0.67, 0.96, 0.31, 11.31,
"12:Q4", 8.03, 0.56, 0.78, 0.68, 0.97, 0.32, 11.34,
"13:Q1", 7.93, 0.55, 0.79, 0.66, 0.99, 0.31, 11.23,
"13:Q2", 7.84, 0.54, 0.81, 0.67, 0.99, 0.3, 11.15,
"13:Q3", 7.9, 0.54, 0.85, 0.67, 1.03, 0.3, 11.28,
"13:Q4", 8.05, 0.53, 0.86, 0.68, 1.08, 0.32, 11.52,
"14:Q1", 8.17, 0.53, 0.88, 0.66, 1.11, 0.31, 11.65,
"14:Q2", 8.1, 0.52, 0.91, 0.67, 1.12, 0.32, 11.63,
"14:Q3", 8.13, 0.51, 0.93, 0.68, 1.13, 0.33, 11.71,
"14:Q4", 8.17, 0.51, 0.96, 0.7, 1.16, 0.34, 11.83,
"15:Q1", 8.17, 0.51, 0.97, 0.68, 1.19, 0.33, 11.85,
"15:Q2", 8.12, 0.5, 1.01, 0.7, 1.19, 0.34, 11.85,
"15:Q3", 8.26, 0.49, 1.05, 0.71, 1.2, 0.35, 12.07,
"15:Q4", 8.25, 0.49, 1.06, 0.73, 1.23, 0.35, 12.12,
"16:Q1", 8.37, 0.49, 1.07, 0.71, 1.26, 0.35, 12.25,
"16:Q2", 8.36, 0.48, 1.1, 0.73, 1.26, 0.36, 12.29,
"16:Q3", 8.35, 0.47, 1.14, 0.75, 1.28, 0.37, 12.35,
"16:Q4", 8.48, 0.47, 1.16, 0.78, 1.31, 0.38, 12.58,
"17:Q1", 8.63, 0.46, 1.17, 0.76, 1.34, 0.37, 12.73,
"17:Q2", 8.69, 0.45, 1.19, 0.78, 1.34, 0.38, 12.84,
"17:Q3", 8.74, 0.45, 1.21, 0.81, 1.36, 0.39, 12.96,
"17:Q4", 8.88, 0.44, 1.22, 0.83, 1.38, 0.39, 13.15,
"18:Q1", 8.94, 0.44, 1.23, 0.82, 1.41, 0.39, 13.21,
"18:Q2", 9, 0.43, 1.24, 0.83, 1.41, 0.39, 13.29,
"18:Q3", 9.14, 0.42, 1.27, 0.84, 1.44, 0.4, 13.51,
"18:Q4", 9.12, 0.41, 1.27, 0.87, 1.46, 0.41, 13.54,
"19:Q1", 9.24, 0.41, 1.28, 0.85, 1.49, 0.4, 13.67,
"19:Q2", 9.41, 0.4, 1.3, 0.87, 1.48, 0.41, 13.86
)
Plot a line plot between Student.Loan and Credit.Card
debt %>%
ggplot(aes(Student.Loan, Credit.Card)) +
geom_line()
debt %>%
mutate(dummy = seq(1:nrow(debt))) %>%
ggplot(aes(Student.Loan, Credit.Card)) +
geom_line() +
transition_reveal(dummy)
5 - 7
debt.date <- debt %>%
mutate(date = seq.Date(as.Date('2003-01-01'), as.Date('2019-06-01'), by = '3 month'))
debt.date %>%
ggplot(aes(Student.Loan, Credit.Card)) +
geom_line() +
transition_reveal(date)
debt.date %>%
ggplot(aes(Student.Loan, Credit.Card)) +
geom_line() +
geom_point() +
geom_text(aes(label = Student.Loan)) +
transition_reveal(date)
8
debt.date.long <- debt.date %>%
select(-1) %>%
gather(DebtType, Amount, -date)
debt.date.long %>%
ggplot(aes(date, Amount, color = DebtType))+
geom_line() +
geom_point() +
geom_text(aes(label = Amount)) +
transition_reveal(date)
9 - Mortgage debt is most correlated with total debt.
cor(debt[-1])
## Mortgage HE.Revolving Auto.Loan Credit.Card Student.Loan
## Mortgage 1.0000000 0.6183166 0.4639135 0.6024080 0.6136820
## HE.Revolving 0.6183166 1.0000000 -0.3506511 0.2111744 -0.1018571
## Auto.Loan 0.4639135 -0.3506511 1.0000000 0.4375437 0.8376519
## Credit.Card 0.6024080 0.2111744 0.4375437 1.0000000 0.1734780
## Student.Loan 0.6136820 -0.1018571 0.8376519 0.1734780 1.0000000
## Other -0.4056250 -0.3855664 -0.0737936 0.4364279 -0.5462505
## Total 0.9728223 0.4397200 0.6465033 0.5906321 0.7667530
## Other Total
## Mortgage -0.4056250 0.9728223
## HE.Revolving -0.3855664 0.4397200
## Auto.Loan -0.0737936 0.6465033
## Credit.Card 0.4364279 0.5906321
## Student.Loan -0.5462505 0.7667530
## Other 1.0000000 -0.4120847
## Total -0.4120847 1.0000000
debt.date.long %>%
filter(DebtType %in% c("Mortgage", "Total")) %>%
ggplot(aes(date, Amount, color = DebtType)) +
geom_line() +
geom_text(aes(label = Amount))+
transition_reveal(date)
debt.date.long %>%
filter(!(DebtType %in% c("Mortgage", "Total"))) %>%
ggplot(aes(date, Amount, color = DebtType)) +
geom_line() +
geom_text(aes(label = Amount))+
transition_reveal(date)
10 - Exploring data on the % of balances 90 days delinquent by loan type.
ninety.day.delinq <- tibble::tribble(
~Quarter, ~MORTGAGE, ~HELOC, ~AUTO, ~CC, ~STUDENT.LOAN, ~OTHER, ~ALL,
"03:Q1", 1.21, 0.35, 2.33, 8.84, 6.13, 7.23, 2.57,
"03:Q2", 1.14, 0.28, 2.26, 8.9, 6.14, 7.13, 2.49,
"03:Q3", 1.1, 0.22, 2.16, 8.67, 6.27, 6.88, 2.39,
"03:Q4", 1.06, 0.31, 2.16, 9.24, 6.23, 7.47, 2.35,
"04:Q1", 1.01, 0.21, 2.32, 9.27, 6.34, 7.68, 2.31,
"04:Q2", 1, 0.15, 2.17, 8.85, 6.38, 7.74, 2.22,
"04:Q3", 1.08, 0.18, 2.27, 8.65, 6.5, 7.48, 2.24,
"04:Q4", 1.08, 0.21, 2.42, 9.18, 6.32, 7.01, 2.26,
"05:Q1", 1.01, 0.25, 2.38, 9.59, 6.03, 7.25, 2.21,
"05:Q2", 0.87, 0.24, 1.99, 9.23, 6.71, 6.17, 2.02,
"05:Q3", 0.91, 0.2, 2.03, 9.07, 6.99, 5.96, 2.02,
"05:Q4", 0.93, 0.16, 2.09, 8.53, 6.59, 5.94, 1.97,
"06:Q1", 0.92, 0.17, 2.15, 8.82, 6.39, 5.85, 1.95,
"06:Q2", 0.86, 0.39, 2.22, 8.96, 6.66, 5.55, 1.91,
"06:Q3", 1.07, 0.5, 2.58, 9.19, 7.16, 5.11, 2.11,
"06:Q4", 1.31, 0.61, 2.62, 9.66, 7.14, 5.46, 2.33,
"07:Q1", 1.56, 0.65, 2.59, 9.74, 6.85, 5.74, 2.5,
"07:Q2", 1.76, 0.77, 2.54, 9.38, 7.29, 5.91, 2.66,
"07:Q3", 2.23, 1.2, 2.76, 9.34, 7.59, 6.14, 3.06,
"07:Q4", 2.93, 1.32, 3.05, 9.48, 7.51, 6.2, 3.62,
"08:Q1", 3.94, 1.86, 3.22, 9.49, 7.38, 6.83, 4.41,
"08:Q2", 4.16, 2.21, 3.26, 10.15, 7.55, 6.85, 4.64,
"08:Q3", 4.73, 2.66, 3.64, 9.48, 7.55, 7.62, 5.11,
"08:Q4", 5.59, 3.33, 3.94, 10.18, 7.82, 8.58, 5.89,
"09:Q1", 6.97, 3.77, 4.35, 11.44, 7.88, 9.27, 7.05,
"09:Q2", 7.93, 3.97, 4.47, 11.74, 8.26, 8.74, 7.8,
"09:Q3", 8.17, 4.18, 4.68, 11.9, 8.45, 9.06, 8.02,
"09:Q4", 8.75, 4.37, 4.92, 12.7, 8.66, 9.22, 8.54,
"10:Q1", 8.89, 4.05, 5.01, 13.73, 8.66, 9.94, 8.71,
"10:Q2", 8.36, 4.29, 4.84, 13.74, 8.95, 10.28, 8.35,
"10:Q3", 7.82, 4.23, 4.83, 13.16, 9.17, 11.3, 7.95,
"10:Q4", 7.61, 4.29, 5.27, 13.27, 9.12, 10.83, 7.83,
"11:Q1", 7.46, 4.66, 5.09, 13.12, 8.96, 10.64, 7.69,
"11:Q2", 6.91, 4.66, 4.99, 12.16, 9.09, 10.4, 7.24,
"11:Q3", 6.83, 4.7, 5.03, 11.5, 8.84, 10.69, 7.14,
"11:Q4", 6.89, 4.71, 4.82, 11.48, 8.45, 10.51, 7.14,
"12:Q1", 6.67, 4.69, 4.55, 11.27, 8.69, 10.24, 6.96,
"12:Q2", 6.33, 4.92, 4.24, 10.9, 8.92, 10.24, 6.71,
"12:Q3", 5.9, 4.93, 4.25, 10.45, 11, 9.83, 6.55,
"12:Q4", 5.58, 3.48, 4.03, 10.57, 11.73, 9.62, 6.31,
"13:Q1", 5.35, 3.22, 3.92, 10.21, 11.19, 9.83, 6.07,
"13:Q2", 4.94, 3, 3.57, 9.99, 10.9, 9.54, 5.7,
"13:Q3", 4.31, 3.51, 3.37, 9.36, 11.83, 8.97, 5.31,
"13:Q4", 3.93, 3.19, 3.35, 9.45, 11.51, 8.94, 5.03,
"14:Q1", 3.72, 3.37, 3.32, 8.51, 11.01, 8.66, 4.77,
"14:Q2", 3.39, 3.33, 3.27, 7.83, 10.92, 8.17, 4.49,
"14:Q3", 3.18, 3.34, 3.14, 7.46, 11.09, 8, 4.33,
"14:Q4", 3.07, 3.16, 3.47, 7.31, 11.32, 7.9, 4.3,
"15:Q1", 2.95, 3.04, 3.34, 8.38, 11.06, 7.95, 4.25,
"15:Q2", 2.51, 3.24, 3.36, 8.39, 11.45, 7.26, 3.98,
"15:Q3", 2.32, 2.44, 3.36, 8.21, 11.56, 7, 3.79,
"15:Q4", 2.18, 2.24, 3.37, 7.65, 11.52, 7.02, 3.69,
"16:Q1", 2.08, 2.19, 3.52, 7.6, 11.04, 7.89, 3.6,
"16:Q2", 1.76, 1.96, 3.46, 7.17, 11.06, 7.22, 3.34,
"16:Q3", 1.63, 2.03, 3.58, 7.08, 10.94, 7.13, 3.28,
"16:Q4", 1.57, 2.13, 3.75, 7.14, 11.17, 7, 3.3,
"17:Q1", 1.67, 2.06, 3.82, 7.45, 10.98, 7.22, 3.37,
"17:Q2", 1.47, 1.88, 3.92, 7.38, 11.22, 6.91, 3.26,
"17:Q3", 1.38, 1.53, 3.97, 7.47, 11.17, 6.66, 3.19,
"17:Q4", 1.27, 1.67, 4.05, 7.55, 10.96, 6.78, 3.12,
"18:Q1", 1.22, 1.51, 4.26, 8.01, 10.66, 7.12, 3.11,
"18:Q2", 1.11, 1.56, 4.17, 7.88, 10.94, 7.05, 3.04,
"18:Q3", 1.06, 1.2, 4.27, 7.94, 11.53, 7.15, 3.09,
"18:Q4", 1.06, 1.16, 4.47, 7.77, 11.42, 6.96, 3.1,
"19:Q1", 1, 1.25, 4.69, 8.32, 10.85, 7.19, 3.06,
"19:Q2", 0.87, 1.1, 4.64, 8.32, 10.83, 7.16, 2.94
)
ninety.day.delinq %>%
mutate(n = seq(1:nrow(ninety.day.delinq))) %>%
ggplot(aes(n, ALL)) +
transition_reveal(n) +
geom_line()
ninety.day.delinq %>%
mutate(n = seq(1:nrow(ninety.day.delinq))) %>%
ggplot(aes(n, MORTGAGE)) +
transition_reveal(n) +
geom_line()
ninety.day.delinq %>%
mutate(n = seq(1:nrow(ninety.day.delinq))) %>%
ggplot(aes(n, STUDENT.LOAN)) +
transition_reveal(n) +
geom_line()